package com.ashin;

/**
 * 递归
 *
 * @Author: Ashin
 * @Date: 2020/9/17
 * @Description: com.ashin
 * @Version: 1.0.0
 */
public class Recursion {

    public static void main(String[] args) {
        char a = 'a';
        char b = 'b';
        char c = 'c';
        hanoid(2, a, b, c);
    }

    /**
     * 将 n 个圆盘从 a 经由 b 移动到 c 上
     *
     * @param n
     * @param a
     * @param b
     * @param c
     */
    private static void hanoid(int n, char a, char b, char c) {
        if (n <= 0) {
            return;
        }
        // 将上面的  n-1 个圆盘经由 C 移到 B
        hanoid(n - 1, a, c, b);
        // 此时将 A 底下的那块最大的圆盘移到 C
        move(a, c);
        // 再将 B 上的 n-1 个圆盘经由A移到 C上
        hanoid(n - 1, b, a, c);
    }

    private static void move(char a, char b) {
        System.out.println(String.format("%c->%c\n", a, b));
    }

}
